// src/alipay/alipay.service.ts
import { Injectable } from '@nestjs/common';
import { AlipaySdk } from 'alipay-sdk';

import config from '../config/alipay.config';

@Injectable()
export class AlipayService {
  private alipay: any; // 初始化alipay-sdk实例

  constructor() {
    this.alipay = new AlipaySdk({
      gateway: config().gateway, // 使用前面配置的网关地址
      appId: config().partner, // AppID
      // encryptKey: '', // 非必填项，根据实际需要配置
      // signType: 'RSA2', // 签名类型
      // charset: 'utf-8', // 字符编码格式
      privateKey: config().privateKey, // App的私钥
      alipayPublicKey: config().alipayPublicKey, // 支付宝的公钥
    });
  }

  async createOrder(params: any) {
    try {
      const html = await this.alipay.pageExecute(
        'alipay.trade.wap.pay', //这里是移动端支付
        // 'alipay.trade.page.pay', //这里是PC支付
        'POST',
        {
          bizContent: params,
          returnUrl: 'http://localhost:4096/#/', //成功后跳转页面
          // notifyUrl : ' http://2q9p4g.natappfree.cc/alipay/notify' //支付宝发送通知用
        },
      );
      // console.log(html);
      return html; // 支付页面接口，返回 HTML 代码片段，内容为 Form 表单
    } catch (error) {
      console.error('Error in creating Alipay order:', error);
      throw new Error('Failed to create Alipay order');
    }
  }
}
